<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>NX Bit</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/NX_Bit"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-NX_Bit rootpage-NX_Bit skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">NX Bit</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p>Le <b>NX Bit</b>, pour <i><span class="lang-en" lang="en">No eXecute</span></i>, est une technique de <a href="Executable_space_protection" class="mw-redirect" title="Executable space protection">protection d'espace exécutable</a> utilisée dans les processeurs pour dissocier les zones de mémoire contenant des instructions, donc exécutables, des zones contenant des données, protégeant le système des <a href="Virus_informatique" title="Virus informatique">virus</a> et <a href="Cheval_de_Troie_(informatique)" title="Cheval de Troie (informatique)">chevaux de Troie</a> utilisant les failles de <a href="D%C3%A9passement_de_tampon" title="Dépassement de tampon">dépassement de tampon</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Historique">Historique</h2></div>
<p>Le NX Bit est intégré pour la première fois sur les processeurs AMD, d'abord sur les processeurs <a href="AMD_Opteron" title="AMD Opteron">Opteron</a> en avril 2003, puis sur les processeurs <a href="Athlon" title="Athlon">Athlon</a> en septembre 2003. Le NX Bit a ensuite été étendu à toute la gamme de processeurs AMD. En septembre 2004, <a href="Intel" title="Intel">Intel</a> intègre une fonctionnalité similaire, appelée XD bit (pour <i>eXecute Disable</i>), d'abord sur ses processeurs pour serveurs (<a href="Xeon" title="Xeon">Xeon</a>, révision Nocona), puis en octobre 2004 sur ses processeurs grand public (<a href="Pentium_4" title="Pentium 4">Pentium 4</a>, <a href="Celeron" title="Celeron">Celeron D</a>, <a href="Pentium_M" title="Pentium M">Pentium M</a> et Celeron M)<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p><p>D'autres architectures processeurs ont par la suite adopté le principe du NX Bit, sous des noms différents :
</p>
<ul><li><a href="Architecture_MIPS" title="Architecture MIPS">MIPS</a> utilise le XI bit (pour eXecute Inhibit) ;</li>
<li><a href="Architecture_ARM" title="Architecture ARM">ARM</a> utilise le XN bit (pour eXecute Never)<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> ;</li>
<li><a href="PowerPC" title="PowerPC">PowerPC</a> utilise le UG bit (pour User Guard).</li></ul>
<p>Bien qu'elles possèdent des noms différents, ces fonctionnalités reposent toutes sur le même principe. Ainsi, l'appellation la plus ancienne, NX Bit, est communément utilisée pour désigner cette technique de protection. Cependant, on retrouve aussi l'appellation NX/XD, faisant référence respectivement aux appellations d'AMD et d'Intel.
</p><p>Le <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a> doit être adapté pour pouvoir tirer avantage du NX Bit. <a href="Microsoft" title="Microsoft">Microsoft</a> gère cette technologie depuis <a href="Windows_XP#Service_Pack_2_.28SP2.29" title="Windows XP">Windows XP Service Pack 2</a> et <a href="Windows_Server_2003#Service_Pack_1" title="Windows Server 2003">Windows Server 2003 SP1</a> via la fonctionnalité <a href="Data_Execution_Prevention" title="Data Execution Prevention">Data Execution Prevention</a><sup class="need_ref_tag" style="padding-left:2px;"><span title="Ce passage nécessite une référence (demandé le 15 juillet 2024) ; voir l'aide.">[réf. nécessaire]</span></sup>. Ce mécanisme a été remanié sous <a href="Windows_Vista" title="Windows Vista">Windows Vista</a>. Enfin, il est devenu obligatoire pour exécuter <a href="Windows_8" title="Windows 8">Windows 8</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Fonctionnement">Fonctionnement</h2></div>
<p>Un système d'exploitation avec prise en charge du NX Bit peut marquer certaines zones de mémoire comme non exécutables. Le <a href="Processeur" title="Processeur">processeur</a> refusera alors d'exécuter tout code se trouvant dans ces zones de mémoire marquées par le système. Toute tentative d'exécution de code dans ces zones marquées déclenche une violation d'accès de mémoire, qui alerte alors l'administrateur du système d'une activité potentiellement malveillante.
</p>
<div class="mw-heading mw-heading3"><h3 id="Principe_technique">Principe technique</h3></div>
<p>Le NX bit est implémenté au niveau des entrées de la <a href="Table_des_pages" title="Table des pages">table des pages</a>, qui gèrent la correspondance entre les adresses virtuelles et physiques. Chaque entrée de la table des pages possède un bit qui indique si la page correspondante est exécutable ou non. Si le bit est à 0, le processeur peut exécuter le code contenu dans la page ; si le bit est à 1, le processeur refuse d’exécuter le code et déclenche une exception. Le NX bit n’est disponible que sur les processeurs 64 bits ou sur les processeurs 32 bits utilisant l’extension PAE (<a href="Extension_d'adresse_physique" title="Extension d'adresse physique">Physical Address Extension</a>).
</p>
<div class="mw-heading mw-heading3"><h3 id="Limites">Limites</h3></div>
<p>Bien qu'efficace contre les attaques par dépassement de tampon, le NX Bit présente toutefois certaines limites et ne constitue donc pas une solution miracle :
</p>
<ul><li>Il nécessite un support du système d’exploitation et des applications. Certains systèmes ou applications peuvent ne pas gérer correctement le NX bit ou le désactiver pour des raisons de compatibilité ou de performance ;</li>
<li>Il ne protège pas contre les attaques qui ne cherchent pas à exécuter du code, mais à modifier le flot d’exécution du programme en écrasant des <a href="Pointeur_(programmation)" title="Pointeur (programmation)">pointeurs de fonction</a> ou des adresses de retour. Ces attaques peuvent utiliser du code existant dans la mémoire exécutable, comme la technique du <a href="Return-oriented_programming" title="Return-oriented programming">return-oriented programming</a> ;</li>
<li>Il peut être contourné par des techniques qui exploitent des failles dans le noyau pour modifier les permissions des pages mémoire. Par exemple, une attaque appelée <i><a href="https://en.wikipedia.org/wiki/JIT_spraying" class="extiw external" title="en:JIT spraying">JIT spraying</a></i> peut utiliser un <a href="Compilateur_JIT" class="mw-redirect" title="Compilateur JIT">compilateur JIT</a> pour générer du code malveillant dans la mémoire exécutable.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Références"><span id="R.C3.A9f.C3.A9rences"></span>Références</h2></div>
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Corroy2004"><span class="ouvrage" id="David_Corroy2004">David <span class="nom_auteur">Corroy</span>, « <a rel="nofollow" class="external text" href="https://www.tomshardware.fr/le-xd-bit-enfin-dans-les-cpu-intel-grand-public/"><cite style="font-style:normal;">Le XD-bit enfin dans les CPU Intel grand public</cite></a> », sur <span class="italique">Tom’s Hardware</span>, <time class="nowrap" datetime="2004-10-12" data-sort-value="2004-10-12">12 octobre 2004</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2023-04-17" data-sort-value="2023-04-17">17 avril 2023</time>)</small></span></span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://developer.arm.com/documentation/den0013/d/The-Memory-Management-Unit/Memory-attributes/Execute-Never"><cite style="font-style:normal;">Documentation – Arm Developer</cite></a> », sur <span class="italique">developer.arm.com</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2023-04-17" data-sort-value="2023-04-17">17 avril 2023</time>)</small></span></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><span class="lang-en" lang="en"><i><a href="Executable_space_protection" class="mw-redirect" title="Executable space protection">Executable space protection</a></i></span></li>
<li><a href="PaX" title="PaX">PaX</a></li>
<li><span class="lang-en" lang="en"><i><a href="Exec_Shield" title="Exec Shield">Exec Shield</a></i></span></li>
<li><a href="W%5EX" title="W^X">W^X</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Lien_externe">Lien externe</h3></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> <a rel="nofollow" class="external text" href="https://www.amd.com/fr-fr/Weblets/0,,7832_11104_11105,00.html">AMD 64 et la fonction <span class="lang-en" lang="en"><i>Enhanced Virus Protection</i></span></a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <span class="lang-en" lang="en"><a rel="nofollow" class="external free" href="https://microsoft.fandom.com/wiki/NX_bit">https://microsoft.fandom.com/wiki/NX_bit</a></span></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la sécurité des systèmes d'information</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-02-12" href="https://fr.wikipedia.org/wiki/?title=NX_Bit&oldid=222942266">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>